package com.xbongbong.paas.service;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.BaseDTO;
import com.xbongbong.pro.formlabel.dto.FormLabelAddDTO;
import com.xbongbong.pro.formlabel.dto.FormLabelBaseDTO;
import com.xbongbong.pro.formlabel.dto.FormLabelDeleteDTO;
import com.xbongbong.pro.formlabel.dto.FormLabelListDTO;
import com.xbongbong.pro.formlabel.dto.FormLabelUpdateDTO;
import com.xbongbong.pro.formlabel.vo.FormLabelAddVO;
import com.xbongbong.pro.formlabel.vo.FormLabelBaseVO;
import com.xbongbong.pro.formlabel.vo.FormLabelDeleteVO;
import com.xbongbong.pro.formlabel.vo.FormLabelListVO;
import com.xbongbong.pro.formlabel.vo.FormLabelUpdateVO;
import com.xbongbong.pro.label.pojo.dto.LabelSortDTO;
import com.xbongbong.pro.label.pojo.vo.LabelGroupListVO;
import com.xbongbong.pro.label.pojo.vo.LabelSortVO;

/**
 *
 * @author 魏荣杰
 *
 */

public interface FormLabelService {
    /**
     * Description: 新建标签
     * @param formLabelAddDTO
     * @return com.xbongbong.pro.formlabel.vo.FormLabelAddVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/16 16:14
     * @since
     */
    FormLabelAddVO add(FormLabelAddDTO formLabelAddDTO) throws XbbException;

    /**
     * Description: 编辑标签
     * @param formLabelUpdateDTO
     * @return com.xbongbong.pro.formlabel.vo.FormLabelUpdateVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/16 16:14
     * @since
     */
    FormLabelUpdateVO update(FormLabelUpdateDTO formLabelUpdateDTO) throws XbbException;

    /**
     * Description: 标签管理页分组
     * @param baseDTO
     * @return com.xbongbong.pro.label.pojo.vo.LabelGroupListVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/16 16:15
     * @since
     */
    LabelGroupListVO groupList(BaseDTO baseDTO) throws XbbException;

    /**
     * Description: 标签管理列表
     * @param formLabelListDTO
     * @return com.xbongbong.pro.formlabel.vo.FormLabelListVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/16 16:15
     * @since
     */
    FormLabelListVO list(FormLabelListDTO formLabelListDTO) throws XbbException;

    /**
     * Description: 删除单个/批量标签
     * @param formLabelDeleteDTO
     * @return com.xbongbong.pro.formlabel.vo.FormLabelDeleteVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/16 16:15
     * @since
     */
    FormLabelDeleteVO delete(FormLabelDeleteDTO formLabelDeleteDTO) throws XbbException;

    /**
     * Description: 回收站-标签恢复
     * @param formLabelBaseDTO
     * @return com.xbongbong.pro.formlabel.vo.FormLabelBaseVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/16 16:15
     * @since
     */
    FormLabelBaseVO recover(FormLabelBaseDTO formLabelBaseDTO) throws XbbException;

    /**
     * Description: 回收站-标签删除（彻底删除）
     * @param formLabelBaseDTO
     * @return com.xbongbong.pro.formlabel.vo.FormLabelBaseVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/16 16:16
     * @since
     */
    FormLabelBaseVO completeDelete(FormLabelBaseDTO formLabelBaseDTO) throws XbbException;

    /**
     * Description: 标签管理页-标签排序
     * @param labelSortDTO
     * @return com.xbongbong.pro.label.pojo.vo.LabelSortVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/16 16:16
     * @since
     */
    LabelSortVO sort(LabelSortDTO labelSortDTO) throws XbbException;

    /**
     * Description: 选择标签列表（组件选择）
     * @param formLabelListDTO
     * @return com.xbongbong.pro.formlabel.vo.FormLabelListVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/16 16:16
     * @since
     */
    FormLabelListVO sampleList(FormLabelListDTO formLabelListDTO) throws XbbException;

    /**
     * Description: tab页设置成员标签的选择列表
     * @param formLabelListDTO
     * @return com.xbongbong.pro.formlabel.vo.FormLabelListVO
     * @throws
     * @author 魏荣杰
     * @date 2021/12/16 16:16
     * @since
     */
    FormLabelListVO tabList(FormLabelListDTO formLabelListDTO) throws XbbException;
}
